RubyKaigi 2023
Day 1
Keynote (Matz)
ライセンスを自分で書きはじめた (自前のものにはしなかった)
Rubyの名前が決まった日を誕生日とする
Coral, Tish
Rubyの基本的な概念は30年前から変わっていない
1995/12にRubyをインターネットで公開
Different POV
do ... end
0.95
コミュニティ
同志
気になる
5年のコミュニティ分断につながった互換性破壊とは?
ISO/IEC 30170 Ruby
コミュニティ分断
Ruby 2.0
Rails幻想
The future vision of Ruby Parser
4つの do
複雑怪奇
bisonには優先度がある
universal parser
Ruby自身のparserはRubyの機能に依存している
RubyのparserはRubyのデータ構造を知っている
LALRパーサーの真の力を引き出す
Develop chrome extension with ruby.wasm
ruby.wasm
よりRubyっぽく書けるようにする
requireを上書き
JS::Object#method_missing
感想: おもしろいけどパワフルではないか
"Ractor" reconsidered
(2023/5/11 15:04 途中からみはじめた)
GCを切ると速くなる
分散GC
Power up your REPL life with types
irb
メソッドチェーンのパフォーマンスの問題
katakata_irb
Rubyの補完は難しい
分岐を考慮した型
LT
ChatGPT型推論
vim
mruby VM
大parser時代
day 2
Fix SQL N+1 queries with RuboCop
途中から
RuboCopでN+1クエリを自動修正する
gda
位置情報を保持する仕組みを作って解決
where_condをメモ化
メモ化のためのモジュール
class_evalが速い
文字列リテラルとインデックスの対応を取る
ActiveRecordにヒントがあった
なるべく行数を減らす
expect_correctionしたコードをeval
copからDBに接続する
ほかのcopの紹介
SQLite版もある
Splitting: the Crucial Optimization for Ruby Blocks
TruffleRubyの人
GraalVM
さまざまな最適化
inline cache
Numeric#sum_to
いろいろな呼び出し方がある
分岐しまくるとたいへんなことになる
stepメソッドをコピーしまくってinline展開
分岐を取り除く
Ruby Implementation of QUIC: Progress and Challenges
QUIC
RFCは実装ガイドではない
PythonからRubyに移植
できるだけ構造を保つ
enumの制約
tupleがない
Hacking and profiling Ruby for performance
ISUCON
Optimizing YJIT’s Performance, from Inception to Production
hybrid type analysis
day 3
Ruby Committers and The World
Build Your Own SQLite3
組み込みシステム向けのSQLite3
ベアメタルで動かす
SQLITE_OS_OTHER=1
キーボード自身がタイプされたキーを記録する
Load Gem from Browser